# create_test_data.py
import os
import pandas as pd
import numpy as np
from config import Config


def create_sample_test_data():
    """创建示例测试数据"""
    print("创建示例测试数据...")

    # 确保测试目录存在
    os.makedirs(Config.TEST_DATA_DIR, exist_ok=True)

    # 创建正常活动测试数据
    normal_data = {
        'frame_timestamp': ['2025-11-03 10:00:00'] * 20,
        'sensor_type': ['accelerometer'] * 20,
        'sensor_timestamp': range(1000, 1000 + 20 * 50, 50),
        'x_value': np.random.normal(0, 0.5, 20),
        'y_value': np.random.normal(0, 0.5, 20),
        'z_value': np.random.normal(9.8, 0.5, 20),
        'magnitude': np.sqrt(np.random.normal(0, 0.5, 20) ** 2 +
                             np.random.normal(0, 0.5, 20) ** 2 +
                             np.random.normal(9.8, 0.5, 20) ** 2)
    }

    # 创建摔倒测试数据
    fall_data = {
        'frame_timestamp': ['2025-11-03 10:00:00'] * 20,
        'sensor_type': ['accelerometer'] * 20,
        'sensor_timestamp': range(2000, 2000 + 20 * 50, 50),
        'x_value': np.concatenate([
            np.random.normal(0, 0.5, 5),  # 正常
            np.random.normal(5, 2, 10),  # 剧烈运动
            np.random.normal(0, 1, 5)  # 静止
        ]),
        'y_value': np.concatenate([
            np.random.normal(0, 0.5, 5),
            np.random.normal(3, 1.5, 10),
            np.random.normal(0, 1, 5)
        ]),
        'z_value': np.concatenate([
            np.random.normal(9.8, 0.5, 5),
            np.random.normal(2, 1, 10),
            np.random.normal(1, 0.5, 5)
        ]),
        'magnitude': []
    }

    # 计算幅度
    fall_data['magnitude'] = np.sqrt(fall_data['x_value'] ** 2 +
                                     fall_data['y_value'] ** 2 +
                                     fall_data['z_value'] ** 2)

    # 保存测试数据
    normal_df = pd.DataFrame(normal_data)
    fall_df = pd.DataFrame(fall_data)

    normal_df.to_csv(os.path.join(Config.TEST_DATA_DIR, "正常活动测试.csv"), index=False)
    fall_df.to_csv(os.path.join(Config.TEST_DATA_DIR, "摔倒测试.csv"), index=False)

    print(f"示例测试数据已创建到: {Config.TEST_DATA_DIR}")
    print("文件列表:")
    for file in os.listdir(Config.TEST_DATA_DIR):
        if file.endswith('.csv'):
            print(f"  - {file}")


if __name__ == "__main__":
    create_sample_test_data()